iT邦幫忙

第 12 屆 iThome 鐵人賽

1

本文同步更新於blog

Bridge Pattern

將抽象部分與實現部分分離,使它們都可以獨立地變化。


橋接模式會將類別分為兩類:
分別是抽象類別 (Abstraction)實現類別 (Implementor)

抽象類別指的是高層級的抽象層。本身不具備具體邏輯。
而實現類別會由低層級的實作層來負責。


舉例:

抽象類別 -> 實現類別
通話介面 -> 室內電話、行動電話
登入介面 -> Web、App


優點
透過分離抽象層與實作層,可根據需求在不同層級上,作相應的變化。

缺點
會使程式碼複雜度提高。


與其他模式的比較:

[策略模式]:
策略模式屬於 行為型 (behavioral) 的設計模式,
而橋接模式屬於 結構型 (structural) 的設計模式。

這使著兩者在目的上,有著根本的不同。

策略模式可能會隨著運行,動態地調整策略。
而橋接模式則會像是兩種不同的實作架構。

[狀態模式]:
狀態模式屬於 行為型 (behavioral) 的設計模式。
可能會在運行過程中改變內部狀態,進而改變具體行為。


舉例:

設計模式 使用情境
策略模式 擁有多家第三方金流,需在主要金流服務掛點時,採用備用金流機制。
狀態模式 行人號誌小綠人會隨著當前標誌不同,顯示不同的圖樣。
橋接模式 框架實作資料庫連線的介面,與其各自不同的具體實作。

ʕ •ᴥ•ʔ:以Laravel而言,設計模式到後來常常會混血,
最終還是回歸到S.O.L.I.D的思考。


上一篇
Day48. 範例:生物分類學(組合模式)
下一篇
Day50. 範例:十二生肖
系列文
你終究都要學設計模式的,那為什麼不一開始就學呢?57
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言